iT邦幫忙

2026 iThome 鐵人賽

DAY 2
1
Modern Web

Laravel Filament 從入門到實戰系列 第 2

Day 01:為什麼是 Filament,跟手刻後台與其他套件比起來差在哪

  • 分享至 

  • xImage
  •  

Day 00:Laravel Filament 從入門到實戰,30 天規劃》 結尾留下一句話,選擇 Filament,賭的是「開發速度」與「客製化彈性」能不能兼得,而這 30 天要驗證的,正是這個賭注成不成立。今天要先把這句話拆開來看,把「為什麼是 Filament」從一句直覺的推薦,變成一個可以自己判斷的決策依據。

開場,這個問題比想像中更值得認真回答

先說一個容易被忽略的事實,多數工程師接觸 Filament 的路徑,是先看到一張漂亮的後台截圖,或是聽到同事說這個套件很好用,然後就直接動手安裝。這個路徑沒有錯,但跳過了一個步驟,你可能到現在都還沒認真問過自己:如果現在手上這個專案需要一套後台管理介面,Filament 真的是最適合的選擇嗎,還是只是剛好最多人在討論而已。

這個問題值得花一整天認真回答,理由很直接。後台管理系統這種東西,一旦選定技術方案並且開始堆疊功能,中途要換掉的成本非常高,不像挑一個工具函式庫,用得不順手還能隨時抽換。你在這 30 天投入的時間,最終要嘛驗證了一個值得長期使用的方案,要嘛提早發現這條路不適合你手上的專案,兩種結果都比「先做了再說,做到一半才發現不合適」要好。今天要做的事,是把這個決策攤開來,用具體的取捨條件,而不是「大家都說好用」這種模糊的理由。

第一個對照組,自己動手刻一套後台

先看最傳統的做法,自己用 Laravel 的 Blade、Controller、Route 這些已經很熟悉的工具,一個模組一個模組刻出後台介面。這個做法的起點成本其實不高,你已經會了,不需要學任何新東西,第一個模組甚至可能比研究一個新套件的用法還要快做完。

問題出現在第二個模組開始浮現。你會發現自己在重複寫幾乎一樣的東西,一個列表頁面要處理分頁、排序、搜尋,一個表單頁面要處理欄位渲染、驗證規則、錯誤訊息顯示,這些邏輯在不同模組之間高度相似,卻因為分散在各自的 Controller 與 Blade 檔案裡,沒有辦法真正共用。做到第五個、第六個模組的時候,你多半已經開始手動抽取一些共用元件或 Trait,試圖降低重複,但這件事本身也要花時間設計與維護,等於是在專案時程之外,另外背了一個「維護我自己土砲框架」的隱性成本。

這個做法的真正代價不是做不出來,而是工時隨模組數量幾乎是線性增加,而且權限判斷這類邏輯很容易散落在各個 Controller 裡,半年後回頭看,很難一眼確認某個角色到底能不能看到某個按鈕,要一個一個 Controller 翻找。手刻後台的彈性毫無疑問是最高的,你想怎麼做都可以,沒有任何框架的既定規則侷限你,但這份彈性換來的是完全沒有任何加速機制,每一分客製化都要自己親手寫出來。

第二個對照組,其他後台管理套件

市面上不是沒有其他選擇,有些後台套件標榜零程式碼或低程式碼,透過設定檔或圖形介面就能生出一套後台,安裝的速度確實比 Filament 或手刻都快。但這類套件的問題,往往在於它們是獨立於你原本的 Laravel 專案架構之外運作的,它有自己的一套設定語言,你原本熟悉的 Eloquent 關聯、Policy 權限、Service 層邏輯,往往需要額外的轉接層才能接進這套後台,等於是在你已經很熟悉的 Laravel 生態之上,又疊了一層需要重新學習的抽象。

還有一類套件走的是另一個極端,客製化彈性確實很高,幾乎什麼都能改,但代價是這份彈性本身需要你寫大量的樣板程式碼才能發揮出來,安裝完之後距離一個能用的後台,中間還有相當長的一段路要走,跟宣傳的「快速生成後台」有一定落差。

這兩類套件都不是不能用,但都指向同一個問題,它們在「開發速度」與「客製化彈性」這兩個軸上,通常只能顧好一端,要嘛犧牲了跟既有 Laravel 專案的深度整合換取安裝當下的速度,要嘛保留了高度彈性卻犧牲了原本該有的開發速度優勢。

Filament 想解決的,正是這個兩難

把手刻後台與其他套件的取捨攤開來看,會發現這兩者分別站在一個光譜的兩端,一端是彈性最大但完全沒有加速、一端是安裝快速但整合淺或彈性受限。Filament 選擇的位置,是盡可能不走極端,同時往光譜兩端靠。

具體的做法,是深度綁定 Laravel 既有的 Eloquent Model 與 Policy 機制,而不是另外發明一套獨立的資料層或權限系統。一個 Resource 對應的就是你原本專案裡已經存在的 Eloquent Model,欄位定義直接讀取這個 Model 的屬性與關聯,權限判斷直接讀取這個 Model 對應的 Policy,這代表你原本專案裡已經寫好的商業邏輯與資料驗證規則,不需要為了套用 Filament 而重寫一份。這就是它想解決的兩難,安裝與建立一個基本 CRUD 介面的速度接近其他套件的「快速生成」,但因為深度整合 Laravel 生態,客製化彈性又能接近手刻的自由度,需要客製的地方,寫的還是你原本就熟悉的 PHP 與 Blade 元件語法,不需要學一套全新的獨立語言。

這裡要誠實補一句,這不代表 Filament 沒有自己的學習曲線,也不代表它能兼顧到光譜兩端的極限值,手刻後台仍然能做到理論上限的彈性,其他套件在最基本的展示情境下仍然可能比 Filament 更快生出畫面。今天要下的結論不是「Filament 全面優於另外兩者」,而是「在深度整合既有 Laravel 專案、同時兼顧開發速度這個交集區間,Filament 目前是相對均衡的選擇」,這句話背後的具體證據,會在後面的天數裡透過實際建置過程逐步累積,不是今天光靠文字論述就能說服你的事。

定案示範情境,一間寵物用品批發商的後台

決策依據講清楚之後,今天還有一件同樣重要的事要做,把接下來 30 天要一起建置的示範專案定下來。

這個系列從明天開始,全程使用同一個示範情境:一間寵物用品批發商的後台管理系統。這間批發商的業務型態是這樣的,他們從上游廠商進貨各類寵物用品,商品項目多且規格細瑣,客戶是各地的寵物用品店與寵物協會,訂單量不算巨大但頻率高,倉庫需要清楚掌握每項商品的庫存水位,管理層則需要定期看到銷售與庫存的報表數字。後台會涵蓋五個模組,商品、訂單、客戶、庫存、報表,這五個模組彼此之間有真實的業務關聯,商品會出現在訂單裡、訂單會影響庫存水位、客戶會累積訂單紀錄、報表則彙整前面幾個模組的數據。

選擇這個情境不是隨意決定的。它的業務邏輯複雜度適中,複雜到足以讓你在後面天數真正用上關聯資料、權限控管、多租戶隔離這些進階機制,但又不至於複雜到光是理解業務規則就耗掉大半天,讓你能把心力真正放在學習 Filament 本身,而不是拿去消化一個過於燒腦的業務場景。更重要的是,這個情境從明天第一個 Panel 開始,會一路陪你走到第 30 天,每天做的事情都疊加在前一天的基礎上,你會親眼看著它從一個空殼,長成一套具備完整權限與儀表板的正式系統。

小結,方向定了,地基還沒動工

今天只做了一件事,把「為什麼是 Filament」這句話,從一個直覺的推薦,拆成手刻後台、其他套件、Filament 三者在開發速度與客製化彈性上的具體取捨,並且誠實承認 Filament 不是在每個維度都拿到理論上限,它的定位是在深度整合既有 Laravel 專案這個交集區間裡相對均衡。今天也把接下來 30 天要共同建置的示範情境定案下來:一間寵物用品批發商的後台管理系統,涵蓋商品、訂單、客戶、庫存、報表五個模組。

但今天從頭到尾,都還沒有真正動手安裝任何東西,這個決策依據講得再清楚,終究只是紙上談兵。真正要驗證的,是明天開始把 Filament 裝進這個示範專案裡,親手看看第一個 Panel 長什麼樣子。


上一篇
Day 00:Laravel Filament 從入門到實戰,30 天規劃
下一篇
Day 02:安裝與第一個 Panel,認識這個後台入口容器
系列文
Laravel Filament 從入門到實戰4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言